package fr.bugtracker.entity.technique;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.TableGenerator;

import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;

import fr.bugtracker.dao.technique.IdentifiableEntity;

/**
 * Classe entité Compte
 */
@Entity
@Table(name = "utilisateur_compte")
@TableGenerator(name = "sequence_compte", pkColumnValue = "seq_compte", table = "sequence", pkColumnName = "seq_name", valueColumnName = "seq_count", allocationSize = 1)
public class Compte implements IdentifiableEntity {

	/**
	 *
	 */
	private static final long serialVersionUID = -8891539610610915615L;
	/**
	 * identifiant technique
	 */
	@Id
	@Column(name = "id", unique = true, length = 10)
	@GeneratedValue(strategy = GenerationType.TABLE, generator = "sequence_compte")
	private Integer id;
	/**
	 * libellé
	 */
	@Column(name = "theme", length = 100)
	private String theme;

	/**
	 * Constructeur de la classe <code>Compte</code>.
	 */
	public Compte() {
	}

	/**
	 * @see fr.bugtracker.dao.technique.IdentifiableEntity#getId()
	 */
	public Integer getId() {
		return id;
	}

	/**
	 * <p><b>Accès en écriture à l'attribut id.</b></p>
	 * @param pId L'attribut id à modifier.
	 */
	public void setId(Integer pId) {
		id = pId;
	}

	/**
	 * <p><b>Accès en lecture à l'attribut theme.</b></p>
	 * @return Retourne l'attribut theme sous forme de <code>String</code>.
	 */
	public String getTheme() {
		return theme;
	}

	/**
	 * <p><b>Accès en écriture à l'attribut theme.</b></p>
	 * @param pTheme L'attribut theme à modifier.
	 */
	public void setTheme(String pTheme) {
		theme = pTheme;
	}

	/**
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		}
		if (obj == null) {
			return false;
		}
		if (!(obj instanceof Compte)) {
			return false;
		}
		Compte other = (Compte) obj;
		return new EqualsBuilder().append(id, other.id).isEquals();
	}

	/**
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
		return new HashCodeBuilder(17, 37).append(id).toHashCode();
	}

	/**
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return "Compte [id=" + id + ", theme=" + theme + "]";
	}

}